home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 090 / prolog1.arc / MEXP.PRO < prev    next >
Encoding:
Text File  |  1985-01-22  |  1.6 KB  |  83 lines

  1.  
  2.  
  3. begin :-
  4.     print( 'What is the name of the input file? : '),
  5.     ratom( File ),
  6.     open( File, r ),
  7.     print( 'How many iterations? : '),
  8.     rnum( N ),
  9.     docalc( N, File ),
  10.     close( File ).
  11.     
  12. docalc( N, File ) :- N > 0, 
  13.     M is N - 1,  
  14.     calculate( File ),
  15.     docalc( M, File ).
  16.  
  17. docalc( 0, _ ).
  18.  
  19. calculate( Source ) :-
  20.  
  21. /* Read in 2 elements: */
  22.     readlist_n( Parset, Source, 2 ),
  23.     listval( Parset, 0, 1 ),
  24.  
  25. /* Typical formats: '3.5g', '5.7e', etc. */
  26.     open( mathout, wr ),
  27.     wrlist( Parset, mathout ),
  28.     close( mathout ),
  29.     exec( calc ), 
  30. /* Read mathinps from file test5 wrote: */
  31.     open( mathinp, r ),
  32.     readlist( Num_list, mathinp ),
  33.         close( mathinp ),
  34. /* Display results: */
  35.         print('\nAnd now, the results: '),
  36.     prt_numlist( Num_list ).
  37.  
  38. /* Numlist will be of the form: Numlist = [ 12345, 5678 ]. */
  39.  
  40.  
  41. readlist( [H|T], File ) :- rnum( H, File), readlist( T, File ).
  42. readlist( [], _ ).
  43.  
  44. readlist_n( [H|T], File,N ) :- 
  45.     N > 0, M is N - 1,
  46.     rnum( H, File), 
  47.     readlist_n( T, File, M ).
  48.  
  49. readlist_n( [], _, 0 ).
  50.  
  51. doinp(X) :- open( mathinp, r ), 
  52.     readlist( X, mathinp ),
  53.     close( mathinp ).
  54.  
  55.  
  56. query( X, Argnum ) :-
  57.     print('\nWhat is the', Argnum, 'argument:\n\t' ),
  58.     rnum( X ).
  59.  
  60. listval( [H|T], Lower, Upper ) :-
  61.     H > Lower,
  62.     H < Upper,
  63.     listval( T, Lower, Upper ).
  64. listval( [], _, _ ).
  65.  
  66.  
  67. valid( X ) :- X < 1, X > 0.
  68.  
  69.  
  70. prt_numlist( [] ).
  71. prt_numlist( [H|T] ) :- 
  72.     wrnum( user, H, '5.5f' ), 
  73.     print( ' , ' ),
  74.     prt_numlist( T ).
  75.  
  76.  
  77. wrlist( [H|T], Stream ) :-
  78.     wrnum( Stream, H, '3.3f' ), nlf( Stream ),
  79.     wrlist( T, Stream ).
  80.  
  81. wrlist( [], _ ).
  82.  
  83.